package main

import (
	"fmt"
	"github.com/go-redis/redis"
)

func main() {
	client := redis.NewClient(&redis.Options{
		Addr:     "162.14.70.254:6379",
		Password: "123456",
		DB:       2,
	})

	fmt.Println("连接成功", client)

	// ZAdd 添加元素
	//client.ZAdd("zset", redis.Z{
	//	Score:  1,
	//	Member: "a",
	//}, redis.Z{
	//	Score:  2,
	//	Member: "b",
	//}, redis.Z{
	//	Score:  3,
	//	Member: "c",
	//}, redis.Z{
	//	Score:  4,
	//	Member: "d",
	//}, redis.Z{
	//	Score:  5,
	//	Member: "e",
	//})

	// 根据下标范围查询
	val01, _ := client.ZRange("zset", 0, -1).Result()
	fmt.Println("根据下标范围查询", val01)

	// 获取元素的排名
	val02, _ := client.ZRank("zset", "b").Result()
	fmt.Println("获取元素的排名", val02)

	// 返回集合元素的个数
	val03, _ := client.ZCard("zset").Result()
	fmt.Println("返回集合元素的个数", val03)

	// 返回某个分数范围内的元素
	val04, _ := client.ZRangeByScore("zset", redis.ZRangeBy{
		Min: "1",
		Max: "3",
	}).Result()
	fmt.Println("返回某个分数范围内的元素", val04)

	// 增加元素的分数
	client.ZIncrBy("zset", 1, "b")
	// 获取元素的分数
	val05, _ := client.ZScore("zset", "b").Result()
	fmt.Println("获取元素的分数", val05)

	// 范围、排序、以及分页查询
	val06, _ := client.ZRevRangeByScoreWithScores("zset", redis.ZRangeBy{
		Min:    "1",
		Max:    "3",
		Offset: 0,
		Count:  1,
	}).Result()
	fmt.Println("范围、排序、以及分页查询", val06)

	// 根据分数范围删除元素
	client.ZRemRangeByScore("zset", "1", "3")
	val07, _ := client.ZRange("zset", 0, -1).Result()
	fmt.Println("根据分数范围删除元素", val07)
}
